全世界都宠爱的开源 PDF 解释器 Ghostscript又得修了
编译:代码卫士团队
谷歌 Porject Zero 团队的漏洞猎人 Tavis Ormandy“随便看了一眼”Ghostscript 的新版本,就发现了一个影响 9.26 及以前版本的漏洞。
太长不看版:Ghostscript 代码必须非常仔细地处理伪操作符,否则代码就可能遭被攻击者控制的出错消息泄漏代码本身足够的信息。
Ghostscript 是一种 Postscript 和 AdobePDF 解释器,允许 *nix 用户查看 PDF。然而,web 服务器也继承了 Ghostscript 的漏洞,因为如ImageMagick 等工具集使用它来处理用户正在查看的 PDF 和其它图像。
他发现的内容和伪操作符内部的子程序有关。为了保护子程序使终端用户无法查看它们(寻找“他们不应使用的操作符”),它们需被标记为 executeonly。
到目前为止没出现什么问题。不过 Ormandy 解释称,子程序内容也需要保护,以免其内容被暴露给错误处理程序,使用 odef命令将其转变为伪操作符。之后会有一些递归,因为伪操作符并非完整的防护。正如他在标题中所写的那样,“伪操作符中的子程序本身必须是伪操作符。”
如果程序员忘记这一点(或者根本不了解这一点,他打趣道,“没有人说过写 postscript 很容易哈哈”),那么操作符仍然可能被推到操作数堆栈上,而如果代码中出现了某种栈溢出错误,那么就可能暴露给错误处理程序,且可从外部看到并遭利用。
虽然这些漏洞很难被利用,但 Ormandy 提供了 PoC “能够使我高度控制例程”,与“Evince、ImageMagick、Nautilus”以及 Gimp 编辑器和其它库一起运作。
Ghostscript 最终推出新补丁。不过 Ormandy 仍然持谨慎态度,他认为,“需要尽快弃用不受信任的 postscript。”这一想法与他在2018年8月呼吁弃用 GhostScript 的说法遥相呼应。
推荐阅读
原文链接
https://www.theregister.co.uk/2019/01/24/pdf_ghostscript_vulnerability/
本文由代码卫士编译,不代表其观点,转载请注明“转自代码卫士 www.codesafe.cn”。